home *** CD-ROM | disk | FTP | other *** search
/ This Disc Bytes! / Power Computing - The Disc 2 - This Disc Bytes.ISO / mac / CodeWarrior 7 Lite for 68K / MacOS Support / Headers / Universal Headers / Serial.h < prev    next >
Text File  |  1995-07-06  |  4KB  |  171 lines

  1. /*
  2.      File:        Serial.h
  3.  
  4.      Contains:    Serial port Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __SERIAL__
  21. #define __SERIAL__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32.  
  33. #if PRAGMA_ALIGN_SUPPORTED
  34. #pragma options align=mac68k
  35. #endif
  36.  
  37. #if PRAGMA_IMPORT_SUPPORTED
  38. #pragma import on
  39. #endif
  40.  
  41.  
  42. enum {
  43.     baud300                        = 380,
  44.     baud600                        = 189,
  45.     baud1200                    = 94,
  46.     baud1800                    = 62,
  47.     baud2400                    = 46,
  48.     baud3600                    = 30,
  49.     baud4800                    = 22,
  50.     baud7200                    = 14,
  51.     baud9600                    = 10,
  52.     baud19200                    = 4,
  53.     baud38400                    = 1,
  54.     baud57600                    = 0,
  55.     stop10                        = 16384,
  56.     stop15                        = -32768,
  57.     stop20                        = -16384,
  58.     noParity                    = 0,
  59.     oddParity                    = 4096,
  60.     evenParity                    = 12288,
  61.     data5                        = 0,
  62.     data6                        = 2048,
  63.     data7                        = 1024,
  64.     data8                        = 3072
  65. };
  66.  
  67. enum {
  68.     ctsEvent                    = 32,
  69.     breakEvent                    = 128,
  70.     xOffWasSent                    = 128,
  71.     dtrNegated                    = 64,
  72.     ainRefNum                    = -6,                            /*serial port A input*/
  73.     aoutRefNum                    = -7,                            /*serial port A output*/
  74.     binRefNum                    = -8,                            /*serial port B input*/
  75.     boutRefNum                    = -9,                            /*serial port B output*/
  76.     swOverrunErr                = 1,                            /*serial driver error masks*/
  77.     breakErr                    = 8,                            /*serial driver error masks*/
  78.     parityErr                    = 16,                            /*serial driver error masks*/
  79.     hwOverrunErr                = 32,                            /*serial driver error masks*/
  80.     framingErr                    = 64,                            /*serial driver error masks*/
  81.     serdOptionClockExternal        = 0x40,                            /*option bit used with Control code 16*/
  82.     serdOptionPreserveDTR        = 0x80                            /*option bit used with Control code 16*/
  83. };
  84.  
  85. enum {
  86.     sPortA,
  87.     sPortB
  88. };
  89.  
  90. typedef SInt8 SPortSel;
  91.  
  92. /* csCodes for serial driver Control routines */
  93.  
  94. enum {
  95.     serdReset                    = 8,
  96.     serdSetBuf                    = 9,
  97.     serdHShake                    = 10,
  98.     serdClrBrk                    = 11,
  99.     serdSetBrk                    = 12,
  100.     serdSetBaud                    = 13,
  101.     serdHShakeDTR                = 14,
  102.     serdSetMIDI                    = 15,
  103.     serdSetMisc                    = 16,
  104.     serdSetDTR                    = 17,
  105.     serdClrDTR                    = 18,
  106.     serdSetPEChar                = 19,
  107.     serdSetPECharAlternate        = 20,
  108.     serdSetXOff                    = 21,
  109.     serdClrXOff                    = 22,
  110.     serdSendXOnConditional        = 23,
  111.     serdSendXOn                    = 24,
  112.     serdSendXOffConditional        = 25,
  113.     serdSendXOff                = 26,
  114.     serdChannelReset            = 27,
  115.     serdSet230KBaud                = 'JF',                            /* set 230K baud data rate */
  116.     serdSetPollWrite            = 'jf',                            /* disable interrupt-driven transmit */
  117.     serdSetFlushCount            = 'FC'
  118. };
  119.  
  120. /* csCodes for serial driver Status routines */
  121. enum {
  122.     serdGetBuf                    = 2,
  123.     serdStatus                    = 8,
  124.     serdGetVers                    = 9,
  125.     serdGetVersSys                = 0x8000
  126. };
  127.  
  128. struct SerShk {
  129.     Byte                            fXOn;                        /*XOn flow control enabled flag*/
  130.     Byte                            fCTS;                        /*CTS flow control enabled flag*/
  131.     unsigned char                    xOn;                        /*XOn character*/
  132.     unsigned char                    xOff;                        /*XOff character*/
  133.     Byte                            errs;                        /*errors mask bits*/
  134.     Byte                            evts;                        /*event enable mask bits*/
  135.     Byte                            fInX;                        /*Input flow control enabled flag*/
  136.     Byte                            fDTR;                        /*DTR input flow control flag*/
  137. };
  138. typedef struct SerShk SerShk;
  139.  
  140. struct SerStaRec {
  141.     Byte                            cumErrs;
  142.     Byte                            xOffSent;
  143.     Byte                            rdPend;
  144.     Byte                            wrPend;
  145.     Byte                            ctsHold;
  146.     Byte                            xOffHold;
  147. };
  148. typedef struct SerStaRec SerStaRec;
  149.  
  150. extern pascal OSErr SerReset(short refNum, short serConfig);
  151. extern pascal OSErr SerSetBuf(short refNum, Ptr serBPtr, short serBLen);
  152. extern pascal OSErr SerHShake(short refNum, const SerShk *flags);
  153. extern pascal OSErr SerSetBrk(short refNum);
  154. extern pascal OSErr SerClrBrk(short refNum);
  155. extern pascal OSErr SerGetBuf(short refNum, long *count);
  156. extern pascal OSErr SerStatus(short refNum, SerStaRec *serSta);
  157.  
  158. #if PRAGMA_IMPORT_SUPPORTED
  159. #pragma import off
  160. #endif
  161.  
  162. #if PRAGMA_ALIGN_SUPPORTED
  163. #pragma options align=reset
  164. #endif
  165.  
  166. #ifdef __cplusplus
  167. }
  168. #endif
  169.  
  170. #endif /* __SERIAL__ */
  171.